フリースタンディング環境というのは、C++でいう自立処理系の環境のことです。C++の場合と同様、オペレーティングシステムの支援無しに動作する環境であり、一部のヘッダを除き、標準ライブラリは一切サポートされません。また、プログラムの開始はmainからとは限らず、処理系定義の名前と型を持つ関数から始まります。
サポートされるヘッダ
C11では、フリースタンディング環境でサポートされるヘッダには次のものがあります。
- <float.h>
- <iso646.h>
- <limits.h>
- <stdalign.h>
- <stdarg.h>
- <stdbool.h>
- <stddef.h>
- <stdint.h>
- <stdnoreturn.h>
自立処理系のC++では、<limits>ヘッダがサポートされる代わりに<climits>や<cfloat>ヘッダはサポートされません。また、自立処理系のC++では<atomic>ヘッダがサポートされますがC11の<stdatomic.h>ヘッダはサポートされません。このあたりがC++とは微妙に異なりますので要注意です。
終了処理
C++では、自立処理系であっても、abort, atexit, exit, at_quick_exit, quick_exitの5つの関数がサポートされました。しかし、C言語ではこれらの関数はサポートされません。C言語には例外処理もありませんので、プログラムを終了するには、mainまたはそれに代わる関数から呼び出し元に戻るか、処理系定義の方法に依存することになります。

![[C11] 第4回 (欠番)](https://www.kijineko.co.jp/wp-content/themes/keni8-child/images/no-image.jpg)
![[C11] 第9回 リテラル](https://www.kijineko.co.jp/wp-content/uploads/2021/10/2362788_s.jpg)
![[C11] 第8回 構造体と共用体と列挙体](https://www.kijineko.co.jp/wp-content/uploads/2021/10/22653998_s.jpg)

![[C11] 第7回 修飾子と記憶クラス指定子](https://www.kijineko.co.jp/wp-content/uploads/2021/10/22646833_s.jpg)
![[C11] 第10回 メモリの動的割付け](https://www.kijineko.co.jp/wp-content/uploads/2021/10/4562236_s.jpg)